<?php
/**
 * Controller_Admin_Faq
 *
 * Класс Controller_Admin_Faq отвечает за обработку уведомлений в админке
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class Controller_Admin_Faq extends Controller_Admin {

	/**
	 * Выбор действия по URL
	 *
	 */
	public function action() {
		Service_Debug::setDebug();
		switch ($this->arrRequest[2]) {
			case '':
				$this->actionIndex();
			  break;
			case 'add':
				$this->actionAdd();
				break;
			case 'edit':
				$faqId = intval($this->arrRequest[3]);
				$objFaq = new Faq($faqId);
				if ($objFaq->id) $this->actionEdit($objFaq);
				else $this->setError(404);
				break;
			case 'sections':
				switch ($this->arrRequest[3]) {
					case '':
						$this->actionSectionsList();
						break;
					case 'add':
						$this->actionSectionAdd();
						break;
					case 'edit':
						$faqSectionId = intval($this->arrRequest[4]);
						$objFaqSection = new FaqSection($faqSectionId);
						if ($objFaqSection->id) $this->actionSectionEdit($objFaqSection);
						else $this->setError(404);
						break;
					default:
						$this->setError(404);
						break;
				}
				break;
			default:
				$this->setError(404);
				break;
		}
	}

	/**
	 * Выводит список FAQ для администрирования
	 * 
	 */
	public function actionIndex() {
	  Service_Debug::setDebug();
		$objFaq = new Faq();
	  $arrFaqs = $objFaq->find('all', array(
	    'select' => '`faq`.*, `faq_section`.`faq_section_name_ru`, `faq_section`.`faq_section_name_en`',
	    'joins' => 'LEFT JOIN `faq_section` ON `faq`.`ID_faq_section` = `faq_section`.`ID_faq_section`',
	    'order' => '`faq_section`.`ID_faq_section` ASC, `faq`.`ID_faq` ASC'
	  ));
	  
	  $this->title = $this->pageHead = 'Администрирование частых вопросов';
	  $objViewFaq = new View_Faq();
	  $this->addUrl = W_ADMIN . 'faq/add/';
	  $this->addJs('faq.js');
	  $this->showHeader();
	    $objViewFaq->showList($arrFaqs);
		$this->showFooter();
	}
	
	/**
	 * Добавление частых вопросов 
	 */
	public function actionAdd() {
	  Service_Debug::setDebug();
	  if (isset($_POST['Faq'])) {
			$objFaq = new Faq($_POST['Faq']);
			if ($objFaq->save()) User_Session::moveTo(W_ADMIN . 'faq/', 'Частый вопрос успешно добавлен', 1);
		}
		else $objFaq = new Faq();
		$objFaqSection = new FaqSection();
	  $arrFaqSections = $objFaqSection->find('all', array('select' => '`faq_section_name_ru`, `ID_faq_section`', 'order' => '`faq_section_name_ru` ASC'));
		
	  $this->title = $this->pageHead = 'Добавление раздела частых вопросов';
	  $objViewFaq = new View_Faq();
	  //$this->addWysiwygMetas();

	  $this->showHeader();
	    $objViewFaq->showEditForm($objFaq, $arrFaqSections);
		$this->showFooter();
	}
	
  /**
   * Выводит страницу редактирования частого вопроса
   * 
   * @param Faq $objFaq - объект частого вопроса для редактирования
   */
  public function actionEdit(Faq $objFaq) {
		Service_Debug::setDebug();
		$editId = $objFaq->id;
		if (isset($_POST['Faq'])) {
			$objFaq = new Faq($_POST['Faq']);
			if ($objFaq->id != $editId) User_Session::moveTo(View_Base::getLanguageUrl(W_ADMIN) . 'faq/', Service_Translate::getText('Недопустимое действие'));
			if ($objFaq->save()) User_Session::moveTo(W_ADMIN . 'faq/', 'Частый вопрос успешно сохранен', 1);
		}
		
		$objFaqSection = new FaqSection();
	  $arrFaqSections = $objFaqSection->find('all', array('select' => '`faq_section_name_ru`, `ID_faq_section`', 'order' => '`faq_section_name_ru` ASC'));
  	
  	$objViewFaq = new View_Faq();
  	$this->pageHead = $this->title = 'Редактирование частого вопроса "' . $objFaq->getField('faq_name_ru') . '"';
  	//$this->addWysiwygMetas();
    
  	$this->showHeader();
      $objViewFaq->showEditForm($objFaq, $arrFaqSections);
    $this->showFooter();
  }
	
  /**
   * Список разделов частых вопросов
   * 
   */
	public function actionSectionsList() {
	  Service_Debug::setDebug();
		$objFaqSection = new FaqSection();
	  $arrFaqSections = $objFaqSection->find('all', array('select' => '*', 'order' => '`faq_section_name_ru` ASC'));
	  
	  $this->title = $this->pageHead = 'Администрирование разделов частых вопросов';
	  $objViewFaq = new View_Faq();
	  $this->addUrl = W_ADMIN . 'faq/sections/add/';
	  $this->showHeader();
	    $objViewFaq->showSectionsListForAdmin($arrFaqSections);
		$this->showFooter();
	}
	
	/**
	 * Добавление разделов частых вопросов 
	 */
	public function actionSectionAdd() {
	  Service_Debug::setDebug();
	  if (isset($_POST['FaqSection'])) {
			$objFaqSection = new FaqSection($_POST['FaqSection']);
			if ($objFaqSection->save()) User_Session::moveTo(W_ADMIN . 'faq/sections/', 'Раздел частых вопросов успешно добавлен', 1);
		}
		else $objFaqSection = new FaqSection();
		
	  $this->title = $this->pageHead = 'Добавление раздела частых вопросов';
	  $objViewFaq = new View_Faq();
	  //$this->addWysiwygMetas();

	  $this->showHeader();
	    $objViewFaq->showSectionEditForm($objFaqSection);
		$this->showFooter();
	}
	
  /**
   * Выводит страницу редактирования раздела частого вопроса
   * 
   * @param FaqSection $objFaqSection - объект раздела частых вопросов для редактирования
   */
  public function actionSectionEdit(FaqSection $objFaqSection) {
		$editId = $objFaqSection->id;
  	Service_Debug::setDebug();
		if (isset($_POST['FaqSection'])) {
			$objFaqSection = new FaqSection($_POST['FaqSection']);
			if ($objFaqSection->id != $editId) User_Session::moveTo(View_Base::getLanguageUrl(W_ADMIN) . 'faq/sections/', Service_Translate::getText('Недопустимое действие'));
			if ($objFaqSection->save()) User_Session::moveTo(W_ADMIN . 'faq/sections/', 'Раздел частых вопросов успешно сохранен', 1);
		}
  	
  	$objViewFaq = new View_Faq();
  	$this->pageHead = $this->title = 'Редактирование раздела частых вопросов "' . $objFaqSection->getField('faq_section_name_ru') . '"';
    
  	$this->showHeader();
      $objViewFaq->showSectionEditForm($objFaqSection);
    $this->showFooter();
  }

}
?>